#include <iostream>
#include<string.h>
using namespace std;
namespace hjx
{
    class string
    {
        public:
//        string()
//        :_str(new char)
//        {
//            *_str='\0';
//        }
//        string(const char*ss)
//        :_str(new char[strlen(ss)+1])
//        {
//            strcpy(_str,ss);
//        }
          string(char *ss=" ")
          :_str(new char[strlen(ss)+1])
          {
              strcpy(_str,ss);
          }

          string(const string&ss)
          :_str(new char[strlen(ss._str)+1])
          {
              strcpy(_str,ss._str);
          }
//        char* shuchu()
//        {
//            return _str;
//        }
        size_t size()
        {
            return strlen(_str);
        }
        char& operator[](size_t i)
        {
            return _str[i];
        }
        string& operator=(const string&s)
        {
            if(this!=&s)//防止s1=s1这种情况发生
            {
                char *tmp=new char[strlen(s._str)+1];//_str本来就有一块空间
            strcpy(tmp,s._str);
            delete []_str;
            _str=tmp;
            }
            return *this;
        }
        //析构函数
        ~string()
        {
            delete[] _str;
            _str=nullptr;
        }
        private:
            char* _str;
    };
}
int main()
{

    hjx::string s1;
    hjx::string s2("hjxyyds");
    hjx::string s3(s2);//若没有自己写拷贝构造函数只能完成浅拷贝
//    cout<<(s1.shuchu())<<endl;
//    cout<<(s2.shuchu())<<endl;
    s1=s3;//没有写operator=重载函数任然有问题
    int i=0;
    for(i=0;i<s2.size();i++)
    {
        s2[i]+=1;
        cout<<(s2[i])<<" ";
    }
    cout<<endl;
    for(i=0;i<s3.size();i++)
    {
        cout<<(s3[i])<<" ";
    }
    cout<<endl;
    for(i=0;i<s1.size();i++)
    {
        cout<<(s1[i])<<" ";
    }
    return 0;
}
